#pragma once
class SSE3Example
{
public:
	SSE3Example(void);
	~SSE3Example(void);
	CString example1(int n);
	CString example2();
	CString example3(CImage m_image,CImage m_image2);
	__int64 GetTimeNoOpt(void);
	__int64 GetTimeOpt(void);

private:

	void Init(CImage m_image);
	void Init2(CImage m_image);
	__int64 TimeNoOpt;
	__int64 TimeOpt;
	float *a,*b,*c;
	double fibonaci_CPlusPlus(int n);
	double fibonaci_SSE(int n);
	void mul_CPlus_Plus();
	void mul_SSE();
	CImage image;
	CImage image2;
	BYTE* m_pImageBits;
	BYTE* m_pInitialImage,*m_pInitialImage2;
	void grayscale_CPlusPlus(BYTE* pSource, BYTE* pSource2,BYTE* pDest,int n);
	void grayscale_SSE(BYTE* pSource, BYTE* pSource2,BYTE* pDest,int n);
};

